﻿
namespace EmbeddedSharp.Core {
    public enum TokenType {
        IDENTIFIER = 0,
        Number,
        Add,
        Sub,
        Mul,
        Div,
        /// <summary>
        /// \
        /// </summary>
        ForwardSlash,
        Square,
        Sqrt,
        /// <summary>
        /// ,
        /// </summary>
        Comma,
        /// <summary>
        /// ;
        /// </summary>
        Semicolon,
        /// <summary>
        /// (
        /// </summary>
        LeftBrace,
        /// <summary>
        /// )
        /// </summary>
        RightBrace,
        /// <summary>
        /// {
        /// </summary>
        LeftBracket,
        /// <summary>
        /// }
        /// </summary>
        RightBracket,
        /// <summary>
        /// [
        /// </summary>
        LeftSquareBrace,
        /// <summary>
        /// ]
        /// </summary>
        RightSquareBrace,
        Assign,
        Dollar,
        Exclamation,
        Colon,
        Wow,
        Question,
        At,
        Underline,
        Tilde,
        Percent,
        Comment,
        Quote,
        Equal,
        NotEqual,
        LargerEqualTo,
        LargerThan,
        LessEqualTo,
        LessThan,
        And,
        Or,
        Not,
        Nand,
        Nor,
        Declare,
        Dot,
        Sharp,
        End
    }

    public class Token {

        private static Token empty = new Token();

        public TokenType TokenType {
            get;
            set;
        }

        public static Token Empty {
            get {
                return empty;
            }
        }

        public string Value {
            get;
            set;
        }

        public override string ToString() {
            return Value;
        }
    }
}
